import { } from './ee-prop'
import ee from './ee-vuex'
import { createStore, injectStore } from 'ee-vuex'
import { } from './__use/resize'
import { } from './__use/array'
import './ee-style.scss'
import popup from './popup/popup.js'
import { defaultTheme, useTheme } from './basic/ee-theme'
import { computed } from 'vue'



/** 用于vue.use，注册入口引擎
 * @param isMobile 当前环境是否是手机
 * @param attr 用于计算是否拥有属性 <div :属性="attr(值)">
 */
export default {
  install(vue) {
    vue.config.globalProperties.createStore = createStore;
    vue.config.globalProperties.injectStore = injectStore;
    vue.config.globalProperties.console = console;
    vue.config.globalProperties.window = window;
    vue.config.globalProperties.i18n = computed(() => eeui.i18n);

    // 自动导入项目里的所有组件
    const components = require.context('./', true, /^((?!_).)*\.vue$/)
    components.keys().forEach(i => {
      const component = components(i).default;
      if (component.name)
        vue.component(component.name, component);
    })

    // 自动导入项目里的所有指令
    const directives = require.context('./__directives/', true, /\.js$/)
    directives.keys().forEach(i => {
      vue.directive(i.substring(i.lastIndexOf('/') + 1, i.lastIndexOf('.')), directives(i).default);
    })

    vue.use(ee);      // 全局状态仓库

    vue.use(popup);   // 弹窗管理组件

    // 使用默认主题色
    useTheme(defaultTheme);
  },
}

/** class='fc'的容器中仅有2个元素时的flex居中布局
 * 
 * '0' - 首个元素在第二个元素左边
 * 
 * '1' - 首个元素在第二个元素上边
 * 
 * '2' - 首个元素在第二个元素右边
 * 
 * '3' - 首个元素在第二个元素下边
 * 
 * 例如&lt;div class='fc' p='0'&gt;
 * @typedef {object} fc
 * @property {('0' | '1' | '2' | '3')} p
 */

/** 方位
 * @typedef {('center' | 'top' | 'right' | 'bottom' | 'left' | 'auto')} position
 */